package com.alinakipoglu.asprocedural.interfaces
{
	public interface IPorceduralContext
	{
		function get idStack():IIDStack
		function get procedures():Vector.<IProcedure>;
		
		function get idStackSize():uint;
		function set idStackSize(_value:uint):void;
		
		function get updater():IProceduralContextUpdater;
		function set updater(_value:IProceduralContextUpdater):void;
		
		function get initProcedure():IProcedure;
		function set initProcedure(_value:IProcedure):void;
		
		function get resetProcedure():IProcedure;
		function set resetProcedure(_value:IProcedure):void;
		
		function addProcedure(_procedure:IProcedure):void;
		function removeProcedure(_procedure:IProcedure):void;
		function getProcedureByID(_id:String):IProcedure;
		
		function init():void;
		function reset():void;
		function update():void;
	}
}